package com.liuyi.framework.web.note;

import javax.servlet.http.HttpServletRequest;

/**
 * <p>
 * 短信储存验证接口
 * </p>
 *
 * @author Mr.Fmy
 * @since 2020-12-12
 */
public interface NoteStorageValition {

    /**
     * 获取验证码
     *
     * @param type  验证码类型
     * @param phone 手机号
     * @return 验证码
     */
    String get(String type, String phone);

    /**
     * 清楚验证码
     */
    void remove(String type, String phone);

    /**
     * 获取手机号、有些时候手机号是从登录人的信息中获取的，这里可以自定义处理
     */
    String getPhone(NoteUrl noteUrl,HttpServletRequest request);

    String getNoteCode(HttpServletRequest request);

    /**
     * 储存验证码验证失败
     *
     * @param noteUrl 验证URI规则
     * @param phone   手机号
     */
    void setValitonFail(NoteUrl noteUrl, String phone);

    /**
     * 获取该验证码验证次数
     *
     * @param noteUrl 验证规则
     * @param phone   手机号
     */
    int getValitionCount(NoteUrl noteUrl, String phone);

    /**
     * 最大试错次数
     */
    default int getValitonMaxCount() {
        return 3;
    }
}
